<?php
/*
  щаблоны свободных виджетов - в папке templates 
  
  [!] имя в базе - MenuGeneral
  [!] файл - Widgets/MenuGeneral.php
  [!] вывод - {$MenuGeneral_widget}
  
*/
class MenuGeneralWidget extends abstractWidget
{

    private $name = 'MenuGeneralWidget';
    const WIDGET_NAME = 'MenuGeneralWidget';

    function __construct($input_data = null)
    {
        $this->input_data = $input_data;

        parent::__construct();

        $this->view = $this->registry->get('View');
    }

    // получить объект виджета

    function process()
    {
        $this->html = '';

        if (is_null($this->widget_data)) {
            $this->setWidgetData();
        }

        if (User::isUserLogged()) $mode = 'user';
        else $mode = 'guest';

        // $this->view->Set('mode',$mode);

        //XML        
        $this->view->data = $this->prepairMenuArray();

        // $this->html = $this->view->fetch('widget.menu.general.tpl');
        $this->html = $this->view->fetch($this->widget_data['template']);

    } // --

    /*
     * Формат массива меню: $data['general_menu']['group']['item'][$i] - пункты
     *                      $data['general_menu']['group']['item'][$i]['href']
     *                      $data['general_menu']['group']['item'][$i]['label']
     *                      $data['general_menu']['group']['item'][$i]['params'][$j]
     *                      $data['general_menu']['group']['item'][$i]['params'][$j]['key']
     *                      $data['general_menu']['group']['item'][$i]['params'][$j]['value']
     *                      $data['general_menu']['group']['name'] - ключ (зарезервировано)
     *                      $data['general_menu']['group']['title'] - название группы меню
     */
    private function prepairMenuArray()
    {


        $reader = new Zend\Config\Reader\Xml();
        $data = $reader->fromFile(SITE . '/templates/xml.navigation.xml');

        //$unit = mb_strtolower($this->registry->Model->translitBackToCyr(Controller::getUriArgument(1)));
        $virtual_modul_index = mb_strtolower($this->registry->virtual_modul_index);
        $modul_index = mb_strtolower($this->registry->modul_index);

        $menu = null;

        //TODO сделать рекурсивную функцию, чтобы избежать дублирования кода

        if (isset($data['general_menu'])) {
            $menu = $data['general_menu'];

            if (is_array($menu)) {
                if (isset($menu['group'])) {
                    if (isset($menu['group'][0])) {
                        // Групп несколько
                        $groups = $menu['group'];

                        // Проходим по группам
                        for ($j = 0; $j < count($groups); $j++) {
                            $name = $groups[$j]['name'];
                            $title = $groups[$j]['title'];
                            $items = isset($groups[$j]['item']) ? $groups[$j]['item'] : null;
                            $class = $groups[$j]['class'];
                            $class_2 = $groups[$j]['class_2'];

                            if (isset($items[0])) {
                                // Пунктов несколько
                                for ($z = 0; $z < count($items); $z++) {
                                    $item_href = $items[$z]['href'];
                                    $item_name = $items[$z]['name'];
                                    $item_label = $items[$z]['label'];

                                    $item_class = '';

                                    if ($item_name == $virtual_modul_index OR $item_name == $modul_index) {
                                        // Если текущий модуль/виртуальный модуль совпадает с названием айтема, подсветить его
                                        $item_class = 'active';
                                    }
                                    $data['general_menu']['group'][$j]['item'][$z]['class'] = $item_class;

                                    // Параметры айтема
                                    if (isset($items[$z]['params'])) {
                                        $item_params = $items[$z]['params'];
                                        if (isset($item_params['param'][0])) {
                                            // Параметров несколько
                                            $params = $item_params['param'];
                                            for ($v = 0; $v < count($params); $v++) {
                                                // Проходим по параметрам
                                                if (isset($params[$v]['key']) AND isset($params[$v]['value'])) {
                                                    $key = $params[$v]['key']; // Ключ
                                                    $value = $params[$v]['value']; // Значение
                                                }
                                            }
                                        } else {
                                            // Один параметр
                                            if (isset($item_params['param'])) {
                                                $param = $item_params['param'];
                                                $key = $param['key']; // Ключ
                                                $value = $param['value']; // Значение
                                            }
                                        }
                                    } // -- параметры

                                }
                            } else {
                                // Пункт один
                                // $item = $groups[$j]['item'];
                            }

                        }

                    } else {
                        // Группа одна
                        // $group = $menu['group'];
                    }
                }
            }
            $data = $data['general_menu'];
        }
        ///fb($data['group'][0]);


        return $data;
    }

}


?>